// 此文件对返回结果进行处理，需要根据服务端的返回对象，自行编写逻辑代码（最好要求服务端返回结果格式统一）
import config from '@/config';

const timeoutError = {
  state: 408,
  message: '网络异常，请检查网络',
};

const serverError = {
  state: 500,
  message: '服务器异常，请稍后再试',
};

// 统一处理服务端数据，需要服务端返回数据规范，根据项目需要自行更改！！
// 注意，此处数据response默认返回格式为
// 错误数据格式：{ state: xxx, data: { message: 'xxxx'} }
// 正确数据格斯：{ state: 0, data: { content: '这个值可以是任意类型'} }

export const handleRsp = (response, resolve, reject) => {
  if (response.status === 200) {
    // 正常结果
    if (response.data && response.data.state === 0) {
      resolve(response.data.data);
    } else if (response.data && response.data.state === 302) {
      // 自动续期，续期后返回当前页面
      window.location.href = `${config.contextPath}/redirect/target/?targetUrl=${encodeURIComponent(window.location.href)}`;
    } else {
      // 业务上有错误的逻辑，区别于正确逻辑处理流程，一般建议在api调用中通过catch捕捉，通过Toast的方式提示服务端返回的错误message信息
      reject(response.data);
    }
  } else if (response && response.status && response.status.toString().test(/^50/)) {
    // eslint-disable-next-line no-console
    console.log('handleRsp err50', response);
    reject(serverError);
  } else { // 异常情况
    // eslint-disable-next-line no-console
    console.log('handleRsp', response);
    reject(timeoutError);
  }
};

export default {
  handleRsp,
  // handleCode,
};
